<?php
class Application_Form_Usuario_Insere extends Zend_Form {
	
     private $codigo;
     private $userCarregado;
     
     public function __construct($codigo = null) {
        $this->codigo = $codigo;
        parent::__construct();
    }
    
    public function init(){
        $parceria = null;
        
        if(!$this->isNew()){
            $model = Application_Model_Usuario::getInstance();
            $userC = $model->getByIdCompleto($this->codigo);
            $this->userCarregado =$userC;
            $id = new Zend_Form_Element_Text('codigo');
            $id->setLabel('Código do Usuário');
            $id->setAttrib('readonly', 'readonly');
            $id->setValue(!$this->isNew()?$userC['codigo']:null);
            $this->addElement($id);
        }
    
        $this->setAction ( '/usuario/insere/novo' );
        $this->setMethod ('post');
        $this->setName ( 'pesquisa_conteudo_form' );
        $this->setAttrib("class", "well");
        
        $nome = new Zend_Form_Element_Text('nome');
        $nome->setLabel('Nome do Usuário');
        $nome->setValue(!$this->isNew()?$userC['nome']:null);
        $this->addElement($nome);
        
        $cpf = new Zend_Form_Element_Text('cpf');
        $cpf->setLabel("CPF");
        $cpf->setValue(!$this->isNew()?$userC['cpf']:null);
        $cpf->setAttrib("alt", "cpf");
        $this->addElement($cpf);

        $end = new Zend_Form_Element_Text('endereco');
        $end->setLabel('Rua/Bairro');
        $end->setValue(!$this->isNew()?$userC['endereco']:null);
        $this->addElement($end);

        $city = new Zend_Form_Element_Text('cidade');
        $city->setLabel('Cidade');
        $city->setValue(!$this->isNew()?$userC['cidade']:null);
        $this->addElement($city);

        $cep = new Zend_Form_Element_Text('cep');
        $cep->setLabel('CEP');
        $cep->setValue(!$this->isNew()?$userC['cep']:null);
        $cep->setAttrib("alt", "cep");
        $this->addElement($cep);

        $hdDtNasc = new Zend_Form_Element_Text("dt_nascimento");
        $hdDtNasc->setLabel('Data de Nascimento');
        $hdDtNasc->setAttrib("alt", "date");
        $hdDtNasc->setValue(!$this->isNew()?$userC['dt_nascimento']:null);
        $hdDtNasc->addFilter(new Zend_Filter_Date());
        $this->addElement($hdDtNasc);
        
        $parc = new Zend_Form_Element_Select('parceria');
        $parc->setLabel('Parceria');
        $parc->addFilter(new Zend_Filter_Empty());
        $parc->addMultiOptions($this->getParcerias());
        $parc->setValue(!$this->isNew()?$userC['parceria']:null);
        $this->addElement($parc);
        
        $tpUser = new Zend_Form_Element_Select('tipo_pessoa');
        $tpUser->setLabel('Tipo de Usúario');
        $tpUser->addMultiOptions(Util_Function_Util::getTpPessoa());
        $tpUser->setValue(!$this->isNew()?$userC['tipo_pessoa']:'');
        $this->addElement($tpUser);
        
        $planoSaude = new Zend_Form_Element_Select('plano_saude');
        $planoSaude->setLabel("Planos de Saúde");
        $planoSaude->addMultiOptions($this->getPlanoSaude());
        $planoSaude->setAttrib("multiple", "multiple");
        $planoSaude->setValue(!$this->isNew()?$userC['plano_saude']:null);
        $this->addElement($planoSaude);
        
        
        /*FUNCIONARIO*/
        $salario = new Zend_Form_Element_Text('salario');
        $salario->setLabel('Salário');
        $salario->setAttrib("alt", "decimal");
        $salario->setAttrib("class", "funcionario");
        $salario->setValue(!$this->isNew() && $this->isEmploye()?$userC['salario']:'');
        $salario->addFilter(new Zend_Filter_Money());
        $this->addElement($salario);

        $hdDtContratacao = new Zend_Form_Element_Text("dt_contratacao");
        $hdDtContratacao->setLabel('Data de Contratação');
        $hdDtContratacao->setAttrib("alt", "date");
        $hdDtContratacao->setAttrib("class", "funcionario");
        $hdDtContratacao->setValue(!$this->isNew()&& $this->isEmploye()?$userC['dt_contratacao']:'');
        $hdDtContratacao->addFilter(new Zend_Filter_Date());
        $this->addElement($hdDtContratacao);
        
        
        $user = new Zend_Form_Element_Text('username');
        $user->setLabel('Username');
        $user->setAttrib("class", "funcionario");
        $user->setValue(!$this->isNew()&& $this->isEmploye()?$userC['username']:null);
        $this->addElement($user);
        
        
        $pass = new Zend_Form_Element_Password('password');
        $pass->setLabel('Password*');
        $pass->setRenderPassword(true);
        $pass->setAttrib("class", "funcionario");
        $this->addElement($pass);
        
        $perfil = new Zend_Form_Element_Select('perfil_acesso');
        $perfil->setLabel('Perfil de Acesso');
        $perfil->addFilter(new Zend_Filter_Empty());
        $perfil->addMultiOptions($this->getPerfilAcesso());
        $perfil->setValue(!$this->isNew()&& $this->isEmploye()?$userC['perfil_acesso']:null);
        $perfil->setAttrib("class", "funcionario");
        $this->addElement($perfil);
        
        /*FIM FUNCIONARIO*/
        
        $hdDtExclusao = new Zend_Form_Element_Hidden("dt_exclusao");
        $hdDtExclusao->addFilter(new Zend_Filter_Date());
        $hdDtExclusao->setValue(!$this->isNew()&& $this->isEmploye()?$userC['dt_exclusao']:null);
        $this->addElement($hdDtExclusao);

        if($this->isNew()){
            $hdDtCadastro = new Zend_Form_Element_Hidden("dt_cadastro");
            $hdDtCadastro->setValue(Zend_Date::now()->get('Y/M/d'));
            $this->addElement($hdDtCadastro);
        }else{
            $hdDtCadastro = new Zend_Form_Element_Text("dt_cadastro");
            $hdDtCadastro->setLabel('Data de Cadastro');
            $hdDtCadastro->setAttrib('readonly', 'readonly');
            $hdDtCadastro->setValue($userC['dt_cadastro']);
            $hdDtCadastro->addFilter(new Zend_Filter_Date());
            $this->addElement($hdDtCadastro);
        }
        
    }

    private function isNew(){
        return !isset($this->codigo);
    }
    
    private function isEmploye(){
        return isset($this->userCarregado['tipo_pessoa']) && $this->userCarregado['tipo_pessoa'] == 2;
    }
    
    private function getParcerias(){
        $lista = Application_Model_Parceria::getInstance()->listaCombo();
        $retorno[''] = 'Selecione';
        foreach ($lista as $value){
            $retorno[$value['codigo']] = $value['descricao'];
        }
        return $retorno;
    }
    
    private function getPlanoSaude(){
        $lista = Application_Model_PlanoSaude::getInstance()->getModulosLista();
        $retorno = array();
        foreach ($lista as $value){
            $retorno[$value['codigo']] = $value['descricao'];
        }
        
        return $retorno;
    }
    
    private function getPerfilAcesso(){
        $lista = Application_Model_PerfilAcesso::getInstance()->getAll();
        $retorno = array();
        $retorno[] = 'Escolha um Perfil de Acesso';
        foreach ($lista as $value){
            $retorno[$value['codigo']] = $value['descricao'];
        }
        return $retorno;
    }
    
}